package main

import (
	"fmt"
	"path"
	"path/filepath"
	"strings"
	"os"
)

func DispFile(path string, info os.FileInfo, err error) error {
	fmt.Println(path, "-------", info, "======", info.IsDir())
	return nil
}
func main() {

	//只认 /
	//base 返回路径中的最后一部分
	fmt.Println(path.Base("/usr/bin"))//	bin
	fmt.Println(path.Base(""))//	.
	fmt.Println(path.Base("c:\\windows"))//	c:windows
	fmt.Println(path.Base(strings.Replace("c:\\windows", "\\", "/", -1)))//	windows
	//clean 返回等价短路径，用在包含../或./
	fmt.Println(path.Clean("/a/b/../c"))//	/a/c
	fmt.Println(path.Clean("/a/b/../././c"))//	/a/c
	//dir 返回路径中的目录部分，最后一个/前面的部分
	fmt.Println(path.Dir("/a/b/../c/d/e"))//	/a/c/d
	fmt.Println(path.Clean("/a/b/"))//	/a/b
	//ext 取文件扩展名
	fmt.Println(path.Ext("/a/b/t.txt"))//	.txt
	//isAbs	Linux：已/开头是绝对路径，否则相对路径	window：已盘符开头是绝对路径
	fmt.Println(path.IsAbs("/a/b"))//	true
	fmt.Println(path.IsAbs(strings.Replace("C:\\Windows", "\\", "/", -1)))//	false
	//join 路径连接
	fmt.Println(path.Join("/a/b", "c"))//	/a/b/c
	//split 把目录分割成目录，文件两部分
	fmt.Println(path.Split("/a/b/c/t.txt"))//	/a/b/c/ t.txt
	//Abs把相对路径转成绝对路径
	fmt.Println(filepath.Abs("."))//	D:\goWorkspace\goSample
	filepath.Walk(".", DispFile)
}
